//
//  OosElements.h
//  com.oos.kraken
//
//  Created by Pablo Gonzalez on 2/14/11.
//  Copyright 2011 11870.com. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "GDataValueConstruct.h"
#import "GDataObject.h"
#import "GDataCategory.h"

// Extensions

@interface OosValueElementExtension : GDataValueElementConstruct <GDataExtension>
// Extension with simple content. Just a text child (value)
@end

@interface OosObjectExtension : GDataObject <GDataExtension>
// Extension with value and properties
@end

// Actual Elements

@interface OosUserAddress : OosValueElementExtension
@end

@interface OosUrl : OosValueElementExtension
@end

@interface OosTelephone : OosValueElementExtension
@end

@interface OosId : OosValueElementExtension
@end

@interface OosSlug : OosValueElementExtension
@end

@interface OosReviewCounter : OosValueElementExtension
@end

@interface OosSavedCounter : OosValueElementExtension
@end

@interface OosFnv : OosValueElementExtension
@end

@interface OosAvatar : OosValueElementExtension
@end

@interface OosRating : OosObjectExtension

@property (nonatomic, retain) NSString *stringValue;
@property (nonatomic, retain) NSNumber *numberValue;

@end

@interface OosSluggedElement : OosObjectExtension

+ (id) oosSluggedElementWithString : (NSString *) string;

@property (nonatomic, retain) NSString *stringValue;
@property (nonatomic, retain) NSString *slug;

@end

@interface OosSubDependentLocality : OosSluggedElement
@end

@interface OosDependentLocality : OosSluggedElement
@end

@interface OosLocality : OosSluggedElement
@end

@interface OosAdministrativeArea : OosSluggedElement
@end

@interface OosSubAdministrativeArea : OosSluggedElement
@end

@interface OosCountry : OosSluggedElement
@end

@interface OosLeadService : OosSluggedElement
@end

@interface OosPrivacyElement : OosValueElementExtension
@end

@interface OosCommaValuesElement : OosValueElementExtension

- (NSArray /* OosList */ *) values;

@end

@interface OosLists : OosCommaValuesElement

@end

@interface OosTags : OosCommaValuesElement

@end

@interface OosCategoryList : GDataCategory

+ (OosCategoryList *) listWithTerm: (NSString *) term 
               forUserSlug: (NSString *) userSlug;

@end

@interface OosCategoryTag : GDataCategory

+ (OosCategoryTag *) tagWithTerm: (NSString *) term 
              forUserSlug: (NSString *) userSlug;

@end

@interface OosTitle : OosValueElementExtension

@end

@interface OosSummary : OosValueElementExtension

@end

@interface OosOfferType : OosValueElementExtension

@end

@interface OosSignups : OosValueElementExtension

@end

@interface OosValue : OosValueElementExtension

@end
